<template>
  <div class="sub-category">
    <div class="container">
      <!-- 组件化功能 -->
      <!-- 面包屑 -->
      <SubBread></SubBread>
      <!-- 筛选条件 -->
      <SubFilter></SubFilter>
      <!-- 筛选结果区域 -->
      <div class="goods-list">
        <!-- 排序组件 -->
        <SubSort></SubSort>
        <!-- 筛选商品列表 -->
        <SubList></SubList>
      </div>
    </div>
  </div>
</template>

<script>
import { ref, provide } from 'vue'
import SubBread from './components/sub-bread.vue'
import SubFilter from './components/sub-filter.vue'
import SubSort from './components/sub-sort.vue'
import SubList from './components/sub-list.vue'
import { getSubCategoryFilterApi } from '@/api/category'
import { useRoute } from 'vue-router'

export default {
  name: 'SubCategory',
  components: {
    SubBread,
    SubFilter,
    SubSort,
    SubList
  },
  setup () {
    const subCategoryData = ref({})
    const route = useRoute()
    provide('subCategoryData', subCategoryData)

    // 提供过滤条件数据(列表后台接口需要的条件)
    /**
     * 列表过滤/筛选（联动）（组件化）实现步骤：
     * 1. 在vuex或者使用依赖注入，提供过滤条件的数据（共享）
     * 2. 在过滤条件的组件中获取上一步中提供的过滤条件的数据=》点击过滤条件，修改过滤条件的数据
     * 3. 在列表组件中获取上一步中提供的过滤条件的数据=》watch监听过滤条件的修改变化，拿到最新修改的过滤条件的参数，重新请求列表数据
     */
    const filterParams = ref({
      sortField: null, // 排序类别 publishTime(最新), orderNum(人气), price(价格), evaluateNum(评论)
      attrs: [], // 商品属性
      brandId: null // 品牌名称
    })
    provide('filterParams', filterParams)

    const getSubCategoryData = async () => {
      const { result } = await getSubCategoryFilterApi(route.params.id)
      // console.log(result)
      // 添加筛选条件默认全部条件数据和选中状态数据
      // 1. 品牌
      // 后台品牌都添加一个是否选中的属性=》false
      result.brands.forEach(brand => {
        brand.selected = false
      })
      // 自己添加全部条件，默认选中
      result.brands.unshift({
        id: null,
        name: '全部',
        selected: true
      })
      // 2. 属性（动态多个）
      result.saleProperties.forEach(item => {
        item.properties.forEach(per => {
          per.selected = false
        })
        item.properties.unshift({
          id: null,
          name: '全部',
          selected: true
        })
      })
      subCategoryData.value = result
    }
    getSubCategoryData()
    return { subCategoryData }
  }
}
</script>

<style scoped lang='less'>
.goods-list {
  background: #fff;
  padding: 0 25px;
  margin-top: 25px;
}
</style>
